@echo off
echo ====================================
echo 快速编译 - 小型数据库系统
echo ====================================

echo 正在检查编译环境...
where g++ >nul 2>nul
if %errorlevel% neq 0 (
    echo [警告] 未找到g++，尝试使用cl.exe (Visual Studio)...
    where cl >nul 2>nul
    if %errorlevel% neq 0 (
        echo [错误] 未找到任何C++编译器！
        echo 请安装以下之一：
        echo   1. MinGW-w64: https://www.mingw-w64.org/
        echo   2. Visual Studio Community: https://visualstudio.microsoft.com/
        echo   3. MSYS2: https://www.msys2.org/
        pause
        exit /b 1
    ) else (
        echo [信息] 找到Visual Studio编译器，使用CL编译...
        goto compile_vs
    )
) else (
    echo [信息] 找到g++编译器，使用MinGW编译...
    goto compile_gcc
)

:compile_gcc
echo.
echo 使用MinGW编译...
cd sql_compiler_cpp

echo 编译SQL编译器...
g++ -std=c++17 Token.cpp Lexer.cpp AST.cpp Parser.cpp SymbolTable.cpp SemanticAnalyzer.cpp interactive_compiler.cpp -o interactive_compiler.exe -I.

if %errorlevel% neq 0 (
    echo [错误] SQL编译器编译失败
    cd ..
    pause
    exit /b 1
)

echo [成功] SQL编译器编译完成
cd ..

echo.
echo 使用程序：
echo   sql_compiler_cpp\interactive_compiler.exe
echo.
echo 示例用法：
echo   sql_compiler_cpp\interactive_compiler.exe
echo.
pause
goto end

:compile_vs
echo.
echo 使用Visual Studio编译...
cd sql_compiler_cpp

echo 编译SQL编译器...
cl /std:c++17 /EHsc Token.cpp Lexer.cpp AST.cpp Parser.cpp SymbolTable.cpp SemanticAnalyzer.cpp interactive_compiler.cpp /Fe:interactive_compiler.exe /I.

if %errorlevel% neq 0 (
    echo [错误] SQL编译器编译失败
    cd ..
    pause
    exit /b 1
)

echo [成功] SQL编译器编译完成
cd ..

echo.
echo 使用程序：
echo   sql_compiler_cpp\interactive_compiler.exe
echo.
echo 示例用法：
echo   sql_compiler_cpp\interactive_compiler.exe
echo.
pause
goto end

:end
